package com.itheima.ms.config;

import com.itheima.ms.tl.DataSourceTypeTL;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

import javax.sql.DataSource;
import java.util.Map;

/**
 * 设置初始化数据源
 * 给spring指定数据源
 */
public class MyDynamicDataSource extends AbstractRoutingDataSource {

    public MyDynamicDataSource(DataSource defaultDataSource, Map targetDataSources){
        //设置默认的数据源--主
        super.setDefaultTargetDataSource(defaultDataSource);
        //设置所有连接数据源
        super.setTargetDataSources(targetDataSources);
        //数据源动态赋予
        super.afterPropertiesSet();
    }

    /**
     * 从当前线程上获取lookup:
     *      DBRoleEnum.MASTER 或
     *      DBRoleEnum.SLAVE
     * spring容器连接哪个数据源，是由该方法的返回值来指定的!
     */
    @Override
    protected Object determineCurrentLookupKey() {
        return DataSourceTypeTL.getDbRole();
    }
}
